package com.taxshare.seller.service;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.taxshare.mybatis.pager.PageHelp;
import com.taxshare.mybatis.pager.PageRequest;
import com.taxshare.response.beans.Response;
import com.taxshare.seller.entity.SellerRuleTemplateEntity;
import com.taxshare.seller.mapper.SellerRuleTemplateMapper;
import com.taxshare.seller.view.dto.SellerRuleTemplateDTO;
import com.taxshare.tools.token.UserInfoUtil;
import com.taxshare.tools.util.UUIDUitl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @ClassName: SellerRuleTemplateService
 * @Description:
 * @author: Hai
 * @date: 2021/7/5 11:22
 */
@Service
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
@Slf4j
public class SellerRuleTemplateService extends ServiceImpl<SellerRuleTemplateMapper, SellerRuleTemplateEntity> {

    /**
     * 规则模板分页查询
     * @param query
     * @return
     */
    public Response getSellerRuleTemplate(PageRequest<SellerRuleTemplateDTO> query) {
        QueryWrapper<SellerRuleTemplateEntity> queryWrapper = new QueryWrapper<>();
        if (StrUtil.isNotBlank(query.getInfo().getSellerTaxNo())) {
            queryWrapper.like("seller_tax_no", query.getInfo().getSellerTaxNo());
        }
        if (StrUtil.isNotBlank(query.getInfo().getRuleName())) {
            queryWrapper.like("rule_name", query.getInfo().getRuleName());
        }
        if (StrUtil.isNotBlank(query.getInfo().getPurchaserTaxNo())) {
            queryWrapper.like("purchaser_tax_no", query.getInfo().getPurchaserTaxNo());
        }
        queryWrapper.orderByDesc("create_time");
        IPage<SellerRuleTemplateEntity> result = PageHelp.siamplePage(this, queryWrapper, query.getPage(), SellerRuleTemplateEntity.class);
        return Response.success(result);
    }

    /**
     * 新增规则模板
     * @param entity
     * @return
     */
    public Response addSellerRuleTemplate(SellerRuleTemplateEntity entity){
        entity.setUuid(UUIDUitl.UUID32(false));
        entity.setCreateUserid(UserInfoUtil.getUserID());
        entity.setUpdateUserid(UserInfoUtil.getUserID());
        entity.setCreateTimeStr(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        entity.setCreateUserName(UserInfoUtil.getUserNickName());
        entity.setUpdateTimeStr(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        baseMapper.insert(entity);
        return Response.success();
    }

    /**
     * 修改规则模板
     * @param entity
     * @return
     */
    public Response updateSellerRuleTemplate(SellerRuleTemplateEntity entity){
        entity.setUpdateUserid(UserInfoUtil.getUserID());
        entity.setUpdateTimeStr(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        baseMapper.updateById(entity);
        return Response.success();
    }

    /**
     * 删除规则模板
     * @param uuid
     * @return
     */
    public Response delSellerRuleTemplate(String uuid){
        baseMapper.deleteById(uuid);
        return Response.success();
    }

}
